package com.chatroom.server;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 聊天室服务器的主程序入口。
 * 职责：
 * 1. 启动服务并监听指定端口。
 * 2. 创建一个 ChatRoom 实例来管理所有客户端。
 * 3. 接受新的客户端连接，并为每个连接创建一个 ClientHandler 实例来处理。
 */
public class Server {

    private static final int PORT = 8088;

    public static void main(String[] args) {
        // 1. 创建聊天室核心管理器
        ChatRoom chatRoom = new ChatRoom();
        System.out.println("聊天室核心已创建。");

        // 2. 启动服务器并监听端口
        try (ServerSocket serverSocket = new ServerSocket(PORT)) {
            System.out.println("服务器已在端口 " + PORT + " 启动，等待客户端连接...");

            while (true) {
                // 3. 接受一个新的客户端连接
                Socket clientSocket = serverSocket.accept();
                System.out.println("接收到新的客户端连接: " + clientSocket.getRemoteSocketAddress());

                // 4. 为新连接创建一个处理器，并将聊天室管理器注入进去
                ClientHandler clientHandler = new ClientHandler(clientSocket, chatRoom);

                // 5. 在新线程中运行该处理器
                new Thread(clientHandler).start();
            }
        } catch (IOException e) {
            System.err.println("服务器启动失败或运行时发生错误: " + e.getMessage());
            e.printStackTrace();
        }
    }
}
